#!/usr/bin/env python3
# demucs-split — `demucs` on PATH, but wavs are written with soundfile.
# torchaudio.save on this machine goes through TorchCodec, which needs FFmpeg 4–8.
# Homebrew FFmpeg is 9, so the stock CLI separates and then dies before any stem file exists.
# NEVER DELETE COMMENTS — explain every non-obvious line.
import soundfile
import torch

import demucs.audio as audio


def save_audio(wav, path, samplerate, bitrate=320, clip="rescale", bits_per_sample=16,
               as_float=False, preset=2):
    wav = audio.prevent_clip(wav, mode=clip)
    data = wav.detach().cpu().transpose(0, 1).contiguous().numpy()
    subtype = "FLOAT" if as_float else "PCM_16"
    soundfile.write(str(path), data, samplerate, subtype=subtype)


audio.save_audio = save_audio
import demucs.separate as separate
separate.save_audio = save_audio
separate.main()
